2016-01-28 2 views
0

Я создаю приложение, имеющее логин facebook, я использовал Facebook SDK для входа в facebook в приложении, все в порядке, но после входа в систему, когда я пытаюсь получить данные из Graph API, возвращает значение null в AccessToken.Ток доступа возвращает null для входа в Facebook

Я уже упомянул об использовании id и facebook приложения facebook в файле манифеста. Как получить токен доступа для facebook, который может мне предложить, это будет большой помощью для меня.

Я использую этот код для извлечения данных:

public void RequestData(){ 
    System.out.println("Request data method "); 

    final AccessToken accessToken = AccessToken.getCurrentAccessToken(); 
    System.out.println("access token = "+accessToken); 

    GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), 
      new GraphRequest.GraphJSONObjectCallback() { 
     @Override 
     public void onCompleted(JSONObject object,GraphResponse response) { 

      JSONObject jsonn = response.getJSONObject(); 
      try { 
       if(jsonn != null){ 

        String text = jsonn.getString("name")+ 
          jsonn.getString("email")+ 
          jsonn.getString("id")+ 
          jsonn.getJSONObject("picture").getJSONObject("data").getString("url"); 

        FpersonName = jsonn.getString("name"); 
        FpersonEmail = jsonn.getString("email"); 
        FpersonPhotoUrl = jsonn.getJSONObject("picture").getJSONObject("data").getString("url"); 
        FpersonSocialId = jsonn.getString("id"); 
        System.out.println("fb details = "+text); 


        if(FpersonName != null && FpersonEmail != null && FpersonPhotoUrl != null && FpersonSocialId != null){ 
         loginFromFb = true; 
         new LoginGoogleAsyncTask().execute(); 
        } 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
    Bundle parameters = new Bundle(); 
    parameters.putString("fields", "id,name,link,email,picture"); 
    request.setParameters(parameters); 
    request.executeAsync(); 
} 

И я также определил SDK в oncreate() методы и CallBack в onActivityResult.

Это ошибка для маркеров доступа: "D/GraphRequest: Warning: Request without access token missing application ID or client token."

+0

Удаленный ли ваш APP-идентификатор в файле манифеста? – Piyush

+0

Да, я уже добавляю приложение id .. –

ответ

0

Используйте этот

private AccessTokenTracker accessTokenTracker; 
private boolean isResumed = false; 
accessTokenTracker = new AccessTokenTracker() { 
      @Override 
      protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, 
                 AccessToken currentAccessToken) { 
       if (isResumed) { 
        if (currentAccessToken != null) { 
        } else { 
         // currentaccestoken has your accesstoken value 
        } 
       } 
      } 
     }; 

@Override 
    public void onResume() { 
     super.onResume(); 
     isResumed = true; 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     isResumed = false; 
    } 
+0

он тоже не работает для моего проекта –

1

Включите профиль трекер в своем коде. Это onCurrentProfileChanged() будет получить срабатывает, когда происходит изменение в профиле (Первоначально, ваш профиль будет пустым, после входа в систему он получает изменен на профиль пользователя, на котором маркер доступа будет доступна)

mProfileTracker = new ProfileTracker() { 
@Override 
protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) { 
// Include your method in here 
requestData(); 
} 
}; 

Не забудьте стоп-трекинг в onDestroy()

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     mProfileTracker.stopTracking(); 
    } 
+0

@Ashish Это сработало для вас? – Chan15

+0

его также не работает :( –

Смежные вопросы