1
私はフェイスブック提供のクロムカスタムタブ機能を使用しています。 Facebookのログイン画面はクロム(Chromeブラウザを搭載しているデバイスの場合)またはシンプルなwebviewの場合と、しかし、非同期呼び出しの後でもデータを提供していない一般的なパーミッションgraphapiを与えた後、私は何が間違っているのか分かりません。可能であれば助けてください。FacebookのAndroidのログイン
追加情報:これはフラグメント、facebookログイン画面私はこれについて解決策を見つけることができない唯一のコールバックが動作していないすべての3つの方法で開かれている私はこれについてFacebookの連絡先にすることができる任意の方法です未回答の質問を取得します。
のGradleの依存
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
アンドロイドマニフェストコード
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<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>
ログインコード
facebook_sign.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().logInWithReadPermissions(getActivity(), App_Contants.PERMISSIONS);
LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
try {
final String id = object.getString("id");
final String name = object.getString("name");
final String email = object.getString("email");
final String gender = object.getString("gender");
final String picture = object.getJSONObject("picture").getJSONObject("data").getString("url");
final String data = id + ", " + name + ", " + email + ", " + gender + ", "+ ", " + picture;
Log.e("my_data", response.getRawResponse());
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,picture.width(400).height(400)");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
Toast.makeText(mContext,"Facebook Login Cancel",Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException error) {
error.printStackTrace();
}
});
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
// Result returned from launching the Intent from
// GoogleSignInApi.getSignInIntent(...);
if (requestCode == 1) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
// Get account information
Log.e("data",acct.getEmail());
mGoogleApiClient.stopAutoManage(getActivity());
mGoogleApiClient.disconnect();
}else if(result.getStatus().isCanceled()){
mGoogleApiClient.stopAutoManage(getActivity());
mGoogleApiClient.disconnect();
}else if(result.getStatus().isInterrupted()){
mGoogleApiClient.stopAutoManage(getActivity());
mGoogleApiClient.disconnect();
}else{
mGoogleApiClient.stopAutoManage(getActivity());
mGoogleApiClient.disconnect();
}
}
}
(あなたloginfragmentとの断片を置換)あなたのフラグメントにそれを渡すために持っていることを、このSDKのトリガとしても活動中
をしなければなりません私はちょうどアンドロイドのデータを取得したい同じ問題に立ち往生しています。私はあなたの解決策に従ったが、うまくいかなかった。私はいくつかのユーザーデータ、すなわちフラグメントにfname、lastnameが必要です。手伝って頂けますか? – Bishwash
あなたのシナリオをどのように実装しようとしているのかを教えてください。 – antoniomerlin