[英]Android Facebook 4.0 SDK How to get Email, Date of Birth of User
[英]Get Facebook user ID with android SDK 4.0
如何使用Facebook Android SDK 4.0獲取Facebook用戶ID?
這是我的代碼不起作用:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_firstlogin);
CallbackManager cm;
LoginButton lb;
cm = CallbackManager.Factory.create();
lb = (LoginButton) findViewById(R.id.facebook_button);
Log.d(TAG, "Salut les zouzous");
LoginManager.getInstance().registerCallback(cm,
new FacebookCallback<LoginResult>()
{
@Override
public void onSuccess(LoginResult loginResult)
{
Log.d(TAG, "Success !");
AccessToken tok;
tok = AccessToken.getCurrentAccessToken();
Log.d(TAG, tok.getUserId());
}
@Override
public void onCancel()
{
Log.d(TAG, "On Cancel");
}
@Override
public void onError(FacebookException exception)
{
Log.e(TAG, exception.getMessage());
}
});
我精確地說
Log.d(TAG, " Success");
不打印。
在回調之外,只有第一個打印內容的日志。
對不起,英語不好。
就像
Profile.getCurrentProfile().getId()
假設用戶已經登錄。
您將需要執行以下操作
@Override
public void onSuccess(LoginResult loginResult) {
final AccessToken accessToken = loginResult.getAccessToken();
GraphRequestAsyncTask request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse graphResponse) {
Log.d(TAG, user.optString("email"));
Log.d(TAG, user.optString("name"));
Log.d(TAG, user.optString("id"));
}
}).executeAsync();
}
只需在onSuccess()中使用loginResult.getAccessToken().getUserId()
()作為
@Override
public void onSuccess(LoginResult loginResult) {
Toast.makeText(Login.this, "User ID : "+loginResult.getAccessToken().getUserId(), Toast.LENGTH_LONG).show();
}
如果您使用的是Facebook提供的“登錄按鈕”,那么我認為不是
LoginManager.getInstance().registerCallback()
你需要使用
lb.registerCallback()
那可以解釋為什么您的回調根本不觸發。
****編輯****
如果您的回調仍未觸發,而您僅需要UserID,則可以使用AccessToken Tracking。
Facebook提供了一個示例,其中您覆蓋在其中聲明了按鈕的Activity / Fragment的onActivityResult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.