我已經(jīng)在我的工作室中成功安裝了android sdk v4.0.
我可以使用LoginButton正確登錄.
到目前為止,一切正常.
我想為每個(gè)收集我感興趣的用戶數(shù)據(jù)提供一個(gè)字符串,例如:
字符串名稱= USER_NAME
字符串= USER_MAIL郵件.
與3.0 SDK正確.
使用新的SDK無(wú)法執(zhí)行此操作,我按照此線程中的說(shuō)明進(jìn)行操作:
Android Facebook 4.0 SDK How to get Email, Date of Birth and gender of User
我在文檔和各個(gè)主題中閱讀了有關(guān)“使用Graph API”的內(nèi)容,但無(wú)法獲取所需的數(shù)據(jù),無(wú)法將它們分配給每個(gè)字符串.
這是我的代碼(就像現(xiàn)在一樣):
LoginButton loginButton;private CallbackManager mCallbackManager;//...loginButton = (LoginButton) findViewById(R.id.login_button);loginButton.setReadPermissions(Arrays.asList("public_profile, email, user_birthday, user_friends")); mCallbackManager = CallbackManager.Factory.create();//... loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code Toast.makeText(Ready.this, "Connected!", Toast.LENGTH_SHORT).show(); 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() { // App code Log.v("LoginActivity", "cancel"); } @Override public void onError(FacebookException exception) { // App code Log.v("LoginActivity", exception.getCause().toString()); } });
正如我之前所說(shuō),我與Facebook的聯(lián)系非常完美,但是不知道如何將其分配給一個(gè)字符串,例如將電子郵件分配給另一個(gè)字符串.
提前非常感謝您.
解決方法:
如果您要說(shuō)的是如何從GraphRequest獲取名稱和電子郵件,那就很簡(jiǎn)單:
GraphRequest request = GraphRequest.newMeRequest( loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted( JSONObject object, GraphResponse response) { // Application code try { String id=object.getString("id"); String name=object.getString("name"); String email=object.getString("email"); String gender=object.getString("gender"); String birthday=object.getString("birthday"); //do something with the data here } catch (JSONException e) { e.printStackTrace(); //something's seriously wrong here } } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,email,gender, birthday"); request.setParameters(parameters); request.executeAsync();
GraphResponse包含諸如使用的HTTPConnect,遇到的任何錯(cuò)誤等信息.假設(shè)一切都按預(yù)期進(jìn)行,則只需JSONObject對(duì)象即可檢索請(qǐng)求的數(shù)據(jù).
來(lái)源:https://www.icode9.com/content-4-530101.html聯(lián)系客服