안드로이드 페이스북 로그인 정보를 메인엑티비티로 전달하는 방법...


package flug.com.afeel;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.Profile;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * Created by Pc on 2016-02-04.
 */
public class FBLoginActivity extends Activity {
    // Custom button
    private static final String TAG_CANCEL = "FACEBOOK LOGIN";
    private Button fbbutton;
    private Button hombtn;
    public String str_email;
    public String str_id;
    public String str_firstname;
    public String str_lastname;
    public Data data;
    public String email2;
    // Creating Facebook CallbackManager Value
    public CallbackManager callbackmanager;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Initialize SDK before setContentView(Layout ID)
        FacebookSdk.sdkInitialize(getApplicationContext());
        setContentView(R.layout.layout_common_facebook_login);
        callbackmanager = CallbackManager.Factory.create();

        // Initialize layout button
        fbbutton = (Button) findViewById(R.id.login_button);

        fbbutton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                LoginManager.getInstance().registerCallback(callbackmanager, new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        // App code
                        GraphRequest request = GraphRequest.newMeRequest(
                                loginResult.getAccessToken(),
                                new GraphRequest.GraphJSONObjectCallback() {
                                    @Override
                                    public void onCompleted(
                                            JSONObject object,
                                            GraphResponse response) {
                                        // Application code
                                        Log.v("LoginActivity", response.toString());
                                    }
                                });
                        Bundle parameters = new Bundle();
                        parameters.putString("fields", "id,name,email,gender, birthday");
                        request.setParameters(parameters);
                        request.executeAsync();
                        **// 성공시 반환되는 값을 웹뷰로....**
                    }

                    @Override
                    public void onCancel() {
                        // not called
                        Log.d("fb_login_sdk", "callback cancel");
                    }

                    @Override
                    public void onError(FacebookException e) {
                        // not called
                        Log.d("fb_login_sdk", "callback onError");
                    }
                });
            }
        });

        hombtn = (Button) findViewById(R.id.fbhome_btn);
        hombtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(FBLoginActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackmanager.onActivityResult(requestCode, resultCode, data);
    }
}

안드로이드 페이스북 로그인을 구현했습니다. 웹뷰에서 스크립트로 페이스북 로그인이 안되서 앱에서 로그인후 웹으로 값을 전달해 로그인을 시켜 주고 싶은데 앱에서 로그인한 정보를 웹뷰로 전다할 수 있는 방법을 모르겠습니다. 이것때문에 잠도 못자고 ㅠㅠ 저 onSuccess 부분에서 메인엑티비티로 이메일 정보만 넘기고 싶은데 어떻게 해야될까요 ??ㅜㅜ

  • 2016년 02월 05일에 작성됨

조회수 1278


1 답변


안드로이드 webview에 javascript function을 만들고 그걸 호출하는 방법이 있습니다.

javascript에 function을 이렇게 만들어 놓으세요.

function emailUpdate(email){
     //email을 이용한 작업을 하세요.
}

안드로이드 코드를 보니 onSucces에서 다시 GraphRequest를 하네요. 그럼 그 GraphRequest의 onCompleted에서 email을 얻어올수 있을건데요. onCompleted 내부에서 이렇게 하면 될 것 같습니다.

String  email=object.getString("email");
//findViewById등의 방법으로 webView를 알고 있다고 가정하면
webView.loadUrl( "javascript:emailUpdate('"+email+"')" );

  • 2016년 02월 05일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close