Я следую документации Facebook, чтобы реализовать вход в facebook, чтобы получить только AccessToken (а не другую информацию о пользователе) в моем приложении для Android. но каждый раз, когда я вхожу в систему, появляется странная ошибка ... Я использовал ключ api, предоставленный клиентом (в моде разработки) для моего приложения, но у него была такая же ошибка, тогда я создал одно приложение facebook с такими же деталями и сделал его живым как Я видел некоторые решения, предполагающие, что приложение должно работать, поэтому я создал живое приложение и проверил учетные данные facebook Id на моем конце, все в порядке, но все же я получаю эту ошибку при попытке входа в систему.
т.е. когда я нажимаю кнопку LoginButton, отображается прогресс, который исчезает, и я получаю сообщение об ошибке
Ошибка
com.mtlab.test E/GraphResponse: {HttpStatus: 404, errorCode: 803, subErrorCode: -1, errorType: OAuthException, errorMessage: (#803) Some of the aliases you requested do not exist: 21312289922111}
Gradle:
implementation 'com.facebook.android:facebook-login:[4,5)'
Мой код, который я использовал для входа в систему:
callbackManager = CallbackManager.Factory.create();
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken token = loginResult.getAccessToken();
if (token!=null){
FacebookAuthToken = token.toString();
sendFacebookDataToServer();
}
}
@Override
public void onCancel() {
// App code
Log.d("Fb","canceled");
}
@Override
public void onError(FacebookException exception) {
// App code
Log.d("Fb","error");
}
});
В манифесте:
<meta-data
tools:replace = "android:value"
android:name = "com.facebook.sdk.ApplicationId"
android:value = "@string/facebook_app_id" />
<activity
android:name = "com.facebook.CustomTabActivity"
android:exported = "true">
<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<category android:name = "android.intent.category.DEFAULT" />
<category android:name = "android.intent.category.BROWSABLE" />
<data android:scheme = "@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
Я выполнил тот же процесс, что и в документации, но ничего не произошло.
@JayRathodRJ Мне не нужны какие-либо поля, требуется только токен доступа, и в нем ничего не упоминается о вызове api графика для входа в facebook
Используйте этот код ... я тоже его использовал ... отлично работает в моем приложении ...
CallbackManager callbackManager;
LoginManager loginManager;
В onCreate
FacebookSdk.sdkInitialize(getApplicationContext());
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
setContentView(R.layout.your_layout);
callbackManager = CallbackManager.Factory.create();
loginManager = com.facebook.login.LoginManager.getInstance();
loginManager.registerCallback(callbackManager, this);
Onclick или где вы хотите открыть Facebook
private void facebookLogin() {
loginManager.logInWithReadPermissions(this, Arrays.asList("email", "public_profile"));
}
После этого
@Override
public void onSuccess(final LoginResult loginResult) {
if (loginResult != null) {
Profile profile = Profile.getCurrentProfile();
if (profile != null) {
firstName = profile.getFirstName();
lastName = profile.getLastName();
social_id = profile.getId();
profileURL = String.valueOf(profile.getProfilePictureUri(200, 200));
Log.e(TAG, "social Id: " + profileURL);
}
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.e("","token"+loginResult.getAccessToken().getToken()); //here is your access token
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,first_name,name,last_name,email,gender,birthday");
request.setParameters(parameters);
request.executeAsync();
}
}
@Override
public void onCancel() {
Log.e("bug", "facebook sign in connection cancel");
}
@Override
public void onError(FacebookException error) {
UiHelper.showToast(this, "An error occur during Facebook Login");
Log.e("bug", "facebook sign in error" + error.toString());
}
В файле приложения build.gradle
compile 'com.facebook.android:facebook-android-sdk:4.+'
В манифесте
<meta-data
android:name = "com.facebook.sdk.ApplicationId"
android:value = "@string/facebook_app_id" />
А также добавить
class YourActivity implements FacebookCallback<LoginResult>
спасибо, я обнаружил проблему, на самом деле я ухудшил библиотеку до 4. +, и она начала нормально работать
Какой поля вы запрашиваете во время вызов API графика?