socialauth-android を使用して、Android ユーザーが Facebook で自分自身を認証できるようにしています。
私の問題は次のとおりです。
ユーザーが資格情報を入力してアプリを承認できる Facebook のログイン ページを正常に表示できます。認可が完了したら、SocialAuthAdapter にリンクされた ReponseListener のコールバック メソッド onComplete を呼び出す必要があります。
検証コードがnullであるという例外が発生したため、これは決して起こりませんが、Facebookのユーザーページでアプリが承認されていることがわかります。
認証が成功した後、クライアントが次のリクエストに含めることができるように、プロバイダーも検証コードを期待しているようです。
また、このヌル コードがユーザー セッション トークンなのか、それとも何か他のものなのかわかりません。
誰かが同様の問題に遭遇しましたか? それを解決する方法は?
写真に示すように、FacebookアプリをネイティブAndroidアプリとして構成しました
コードの簡略化されたバージョンが示されています。
public class LoginActivity extends Activity {
private static final String LOG_TAG = "LoginActivity";
SocialAuthAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
adapter = new SocialAuthAdapter(new ResponseListener());
// [.....]
}
/**
* This method is invoked when the user click on my Facebook button to initiate the
* the authentication process with Facebook
*/
protected void doLogin(){
adapter.authorize(this, Provider.FACEBOOK);
}
private final class ResponseListener implements DialogListener {
@Override
public void onComplete(Bundle values) {
// Variable to receive message status
if (Log.isLoggable(LOG_TAG, Log.DEBUG)) {
Log.d(LOG_TAG, "Authentication Successful");
}
adapter.getUserProfileAsync(new SocialAuthListener<Profile>() {
@Override
public void onError(SocialAuthError arg0) {
Log.e(LOG_TAG, "Cannot retrieve user profile");
}
@Override
public void onExecute(Profile profile) {
Log.d(LOG_TAG, "ValidatedId = " + profile.getValidatedId());
});
}
スタックトレースは
Retrieving Access Token in verify response function
Verifying the authentication response from provider
org.brickred.socialauth.exception.SocialAuthException: Verification code is null
at org.brickred.socialauth.oauthstrategy.OAuth2.verifyResponse(OAuth2.java:114)
at org.brickred.socialauth.oauthstrategy.OAuth2.verifyResponse(OAuth2.java:102)
at org.brickred.socialauth.provider.FacebookImpl.doVerifyResponse(FacebookImpl.java:164)
at org.brickred.socialauth.provider.FacebookImpl.verifyResponse(FacebookImpl.java:154)
at org.brickred.socialauth.SocialAuthManager.connect(SocialAuthManager.java:183)
at org.brickred.socialauth.android.SocialAuthDialog$SocialAuthWebViewClient$1.run(SocialAuthDialog.java:243)
at java.lang.Thread.run(Thread.java:856)
org.brickred.socialauth.exception.SocialAuthException: Verification code is null
org.brickred.socialauth.android.SocialAuthError: Unknown Error