使用Facebook SDK 4.10.0 Android无法获取用户Facebook提要

使用Facebook SDK 4.10.0 Android无法获取用户Facebook提要,facebook,facebook-graph-api,android-activity,android-facebook,facebook-sdk-4.x,Facebook,Facebook Graph Api,Android Activity,Android Facebook,Facebook Sdk 4.x,我在Android应用程序中使用Facebook登录。我已成功登录Facebook,但没有收到特定用户的订阅源。i、 e该用户在Facebook上发布的帖子 我试过的是下面的样子 package com.cloudant_db_demo.android02.insightnewapp; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity;

我在Android应用程序中使用Facebook登录。我已成功登录Facebook,但没有收到特定用户的订阅源。i、 e该用户在Facebook上发布的帖子

我试过的是下面的样子

package com.cloudant_db_demo.android02.insightnewapp;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.HttpMethod;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.ibm.watson.developer_cloud.personality_insights.v2.PersonalityInsights;
import com.ibm.watson.developer_cloud.personality_insights.v2.model.Profile;
import com.twitter.sdk.android.Twitter;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterAuthConfig;
import com.twitter.sdk.android.core.TwitterCore;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.identity.TwitterLoginButton;
import com.twitter.sdk.android.core.models.Tweet;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import io.fabric.sdk.android.Fabric;

public class MainActivity extends AppCompatActivity {

    // Note: Your consumer key and secret should be obfuscated in your source code before shipping.
    private static final String TWITTER_KEY = "twitter_key";
    private static final String TWITTER_SECRET = "twitter_secret";

    CallbackManager callbackManager;
    private TwitterLoginButton twitterLoginButton;
    TwitterSession twitterSession;

    LoginButton fb_login_button;
    AccessToken mAccessToken;

    public static String social_email = "", social_id = "", social_feed = "", social_name = "", social = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
        Fabric.with(this, new Twitter(authConfig));
        setContentView(R.layout.activity_main);

        List<String> permissions = new ArrayList<String>();
        permissions.add("user_posts");

        fb_login_button = (LoginButton) findViewById(R.id.login_button);
        fb_login_button.setReadPermissions(permissions);

        //Facebook CallBack
        callbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_status", "user_posts"));
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                mAccessToken = loginResult.getAccessToken();
                social_id = mAccessToken.getUserId();
                social = "fb";

                Bundle params = new Bundle();
                params.putString("fields", "user_posts");

                /* make the API call for Feed */
                new GraphRequest(AccessToken.getCurrentAccessToken(), "/" + social_id + "/feed/", null, HttpMethod.GET,
                        new GraphRequest.Callback() {
                            public void onCompleted(GraphResponse response) {
                                Log.e("Fb Feed: ", response.toString());
                                social_feed = social_feed + " " + response.toString() + " ";
                                Thread thread = new Thread(new Runnable() {
                                    @Override
                                    public void run() {
                                        callWatsonAPI(social);
                                    }
                                });
                                thread.start();
                            }
                        }).executeAsync();
            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onError(FacebookException exception) {
            }
        });

        //Twitter CallBack
        twitterLoginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button);
        twitterLoginButton.setCallback(new Callback<TwitterSession>() {
            @Override
            public void success(Result<TwitterSession> result) {
                twitterSession = result.data;
                social_id = Long.toString(twitterSession.getUserId());
                social_name = twitterSession.getUserName();
                getUserTweets();
            }

            @Override
            public void failure(TwitterException e) {
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        twitterLoginButton.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }

    void getUserTweets() {
        TwitterCore.getInstance().getApiClient(twitterSession).getStatusesService()
                .userTimeline(null,
                        social_name,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        new Callback<List<Tweet>>() {
                            @Override
                            public void success(final Result<List<Tweet>> result) {
                                new Thread(new Runnable() {
                                    @Override

                                    public void run() {
                                        try {
                                            for (Tweet t : result.data) {
                                                social_feed = social_feed + " " + t.text.toString() + " ";
                                            }

                                            Thread thread = new Thread(new Runnable() {
                                                @Override
                                                public void run() {
                                                    callWatsonAPI(social);
                                                }
                                            });
                                            thread.start();
                                        } catch (Exception ex) {
                                            ex.printStackTrace();
                                        }
                                    }
                                }).start();
                            }

                            @Override
                            public void failure(TwitterException exception) {
                                android.util.Log.d("twittercommunity", "exception " + exception);
                            }
                        });
    }

    void callWatsonAPI(String social) {
        PersonalityInsights service = new PersonalityInsights();
        service.setUsernameAndPassword("27324e40-6c74-44f0-a3b9-9659cf5b4ed5", "eGXEQ8EGpVTl");
        service.setEndPoint("https://gateway.watsonplatform.net/personality-insights/api");
        Profile profile = service.getProfile(social_feed);

        /*Log.e("Watson Response: ", "" + profile);*/

        if (social.equals("fb")) {
            Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
            intent.putExtra("watson_res", profile.toString());
            intent.putExtra("Fb Feed", social_feed);
            startActivity(intent);
        } else {
            Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
            intent.putExtra("watson_res", profile.toString());
            intent.putExtra("Twitter Feed", social_feed);
            startActivity(intent);
        }
    }
}
package com.cloudant_db_demo.android02.insightnewapp;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入com.facebook.AccessToken;
导入com.facebook.CallbackManager;
导入com.facebook.facebook回调;
导入com.facebook.facebook异常;
导入com.facebook.FacebookSdk;
导入com.facebook.GraphRequest;
导入com.facebook.GraphResponse;
导入com.facebook.HttpMethod;
导入com.facebook.login.LoginManager;
导入com.facebook.login.LoginResult;
导入com.facebook.login.widget.LoginButton;
导入com.ibm.watson.developer\u cloud.personality\u insights.v2.PersonalityInsights;
导入com.ibm.watson.developer\u cloud.personality\u insights.v2.model.Profile;
导入com.twitter.sdk.android.twitter;
导入com.twitter.sdk.android.core.Callback;
导入com.twitter.sdk.android.core.Result;
导入com.twitter.sdk.android.core.TwitterAuthConfig;
导入com.twitter.sdk.android.core.TwitterCore;
导入com.twitter.sdk.android.core.TwitterException;
导入com.twitter.sdk.android.core.twitter会话;
导入com.twitter.sdk.android.core.identity.TwitterLoginButton;
导入com.twitter.sdk.android.core.models.Tweet;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入io.fabric.sdk.android.fabric;
公共类MainActivity扩展了AppCompatActivity{
//注意:您的消费者密钥和密码应该在出厂前在源代码中进行模糊处理。
私有静态最终字符串TWITTER\u KEY=“TWITTER\u KEY”;
私有静态最终字符串TWITTER\u SECRET=“TWITTER\u SECRET”;
CallbackManager CallbackManager;
私有TwitterLoginButton TwitterLoginButton;
twitter会话twitter会话;
登录按钮fb_登录按钮;
AccessToken MacAccessToken;
公共静态字符串social_email=“”、social_id=“”、social_feed=“”、social_name=“”、social=“”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getApplicationContext());
TwitterAuthConfig authConfig=新的TwitterAuthConfig(TWITTER\u密钥,TWITTER\u秘密);
Fabric.with(this,newtwitter(authConfig));
setContentView(R.layout.activity_main);
列表权限=新建ArrayList();
权限。添加(“用户_帖子”);
fb_login_按钮=(login按钮)findviewbyd(R.id.login_按钮);
fb_登录_按钮。设置读取权限(权限);
//Facebook回拨
callbackManager=callbackManager.Factory.create();
LoginManager.getInstance().logInWithReadPermissions(这是,Arrays.asList(“public\u profile”、“user\u status”、“user\u posts”));
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
MacAccessToken=loginResult.getAccessToken();
social_id=mAccessToken.getUserId();
社会性=“fb”;
Bundle params=新Bundle();
参数putString(“字段”、“用户帖子”);
/*对提要进行API调用*/
新GraphRequest(AccessToken.getCurrentAccessToken(),“/”+social_id+“/feed/”,null,HttpMethod.GET,
新建GraphRequest.Callback(){
未完成公共空白(图形响应){
Log.e(“Fb提要:,response.toString());
社交订阅源=社交订阅源+“”+response.toString()+“”;
Thread Thread=新线程(new Runnable(){
@凌驾
公开募捐{
卡拉瓦索纳皮(社会);
}
});
thread.start();
}
}).executeAsync();
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常){
}
});
//推特回调
twitterLoginButton=(twitterLoginButton)findViewById(R.id.twitter_login_按钮);
setCallback(newcallback()){
@凌驾
公开作废成功(结果){
twitterSession=result.data;
social_id=Long.toString(twitterSession.getUserId());
social_name=twitterSession.getUserName();
getUserTweets();
}
@凌驾
公共无效失败(Twittere异常){
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
void getUserTweets(){
TwitterCore.getInstance().getApiClient(twitterSession.GetStatuseService())
.userTimeline(空,
社会名号,
无效的
无效的
无效的
无效的
无效的
无效的
无效的
新回调函数(){
@凌驾
公开作废成功(最终结果){
新太尔