안드로이드 페이스북 로그인 정보를 메인엑티비티로 전달하는 방법...
조회수 4220회
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 부분에서 메인엑티비티로 이메일 정보만 넘기고 싶은데 어떻게 해야될까요 ??ㅜㅜ
-
(•́ ✖ •̀)
알 수 없는 사용자
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+"')" );
댓글 입력