小编spl*_*123的帖子

如何使用Facebook Android sdk 4.0中的图形请求获取记录用户的电子邮件地址

我试图通过Facebook(sdk 4.0)登录我的Android应用程序后获取用户的电子邮件地址.我读过很多帖子都在问同样的事情,但我仍然无法让它发挥作用.我只需使用代码登录用户

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends", "email"));
Run Code Online (Sandbox Code Playgroud)

然后我用.做了Graph API请求

LoginManager.getInstance().registerCallback(fbCallbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    System.out.println(loginResult.getAccessToken().toString());

                    GraphRequest request = GraphRequest.newMeRequest(
                            loginResult.getAccessToken(),
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(
                                        JSONObject object,
                                        GraphResponse response) {
                                    System.out.println(object.toString());

                                }
                            });
                    Bundle parameters = new Bundle();
                    parameters.putString("fields", "email");
                    request.setParameters(parameters);
                    request.executeAsync();
                }

                @Override
                public void onCancel() {
                    // App code
                }

                @Override
                public void onError(FacebookException exception) {
                    // App code
                }
            });
Run Code Online (Sandbox Code Playgroud)

输出就是

{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[public_profile, contact_email, user_friends, email, basic_info]}
{"id":"xxxxxxxxxxxxxxx"}
Run Code Online (Sandbox Code Playgroud)

即使我删除了"fields"部分,我也会获得一个带有一堆用户公共信息的JSON,但从未收到电子邮件字段.我正在我自己的Facebook帐户上测试这个,我确实有一个与之关联的电子邮件地址.

android facebook facebook-graph-api facebook-sdk-4.0

15
推荐指数
2
解决办法
2万
查看次数

在不知道类型的情况下使用instanceof

我的Java类代表数据库中的实体,我发现覆盖equals我的类的方法以通过id进行比较是切实可行的.所以例如在我的Transaction课堂上我有这段代码

@Override
public boolean equals(Object other){
    if (other == null) return false;
    if (other == this) return true;
    if (!(other instanceof Transaction))return false;
    Transaction otherTrans = (Transaction) other;
    if (id == null || otherTrans.id == null) return false;
    return id.equals(otherTrans.id);
}
Run Code Online (Sandbox Code Playgroud)

现在,对我来说似乎有点难看,每个类都拥有相同的代码片段,只更改了类的名称.我想让我的类扩展一个超类MyEntity,我会编写上面的方法,替换instanceof Transaction为类似的东西instanceof this.getClass(),但这似乎不可能.我也想过用它代替它instanceof MyEntity,但这意味着两个对象可以被认为是相等的,即使它们属于不同的类,只要它们具有相同的id.还有其他方法吗?

java instanceof dynamic-typing

10
推荐指数
1
解决办法
391
查看次数

c ++迭代器卡在第一个值

我正在学习c ++而且我遇到了一些我无法解释的行为.下面的两段代码提供了不同的结果,而我希望它们是等价的:

success = true;
vector<instruction>::const_iterator i;
for (i = instructions.begin(); i != instructions.end(); ++i) {
    bool up = update(*i);
    success = success && up;        
}
Run Code Online (Sandbox Code Playgroud)

success = true;
vector<instruction>::const_iterator i;
for (i = instructions.begin(); i != instructions.end(); ++i) {
    success = success && update(*i);        
}
Run Code Online (Sandbox Code Playgroud)

我的印象是第二个版本总是采用迭代器的初始值.有人可以解释一下原因吗?

c++

6
推荐指数
1
解决办法
311
查看次数

SSL握手无法从Android客户端连接到Google

我正在使用标准代码

URL url = new URL(sb.toString());
conn = (HttpsURLConnection) url.openConnection();
InputStreamReader in = new InputStreamReader(conn.getInputStream());
Run Code Online (Sandbox Code Playgroud)

从Android客户端连接到Google Places API.但是我得到了这个例外:

02-24 02:29:35.535: E/AdapterClass(3122):   at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:374)
02-24 02:29:35.535: E/AdapterClass(3122):   at com.android.okhttp.Connection.upgradeToTls(Connection.java:197)
02-24 02:29:35.535: E/AdapterClass(3122): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xaf85c200: Failure in SSL library, usually a protocol error
02-24 02:29:35.535: E/AdapterClass(3122): error:1407743E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert inappropriate fallback (external/openssl/ssl/s23_clnt.c:765 0xac3f9e61:0x00000000)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我注意到这只发生在我使用OkHttp请求时,但不是针对此特定请求,而是在我的应用程序的其他部分.那么为什么okhttp会在这里发挥作用(如堆栈跟踪中所示)?

java ssl android

5
推荐指数
1
解决办法
1042
查看次数

使用Paypal在Android应用程序内进行P2P支付

我正在尝试完成简单(理论上......)的任务,让我的Android应用程序的用户向该应用的其他用户付款.似乎Paypal是唯一可行的方法(至少在欧洲),所以我去了他们的网站并找到了他们Android SDK的链接.很酷,但经过一些阅读后发现,这个SDK只允许从用户付款到应用程序的帐户,而不是从用户付款到另一个用户.

所以我做了一些研究,似乎有一种称为移动支付库的功能.很棒,但他们在他们的网站上明确表示这是旧的,并将完全被新的SDK取代.

好的,然后我继续我的研究,发现这些库基于"自适应支付API",这是一组REST API,似乎完全符合我的需要.然而,他们的文档似乎是为浏览器而非移动应用程序量身定制的.例如,您需要在网页上登录才能对付款进行身份验证,我宁愿避免使用这种方式来支持完全应用内用户体验.

一句话:花了几个小时阅读了一堆cahotic文档后,我又回到了起点.也许我正在寻找错误的地方,但这应该是一个非常常见的用例,并且想象它需要几行代码和一个像样的库.

所以我问:是否有人能够提供Android活动的工作示例,允许用户通过插入他的Paypal凭证和收件人的电子邮件向另一个用户付款?

android p2p paypal paypal-adaptive-payments paypal-rest-sdk

5
推荐指数
0
解决办法
422
查看次数

Git:切换分支时保持被忽略的文件

我知道这似乎是GIT的重复:如何在切换分支时保持被忽略的文件?,但我在那里找不到答案.

所以我创建了一个带有--orphan标志的新分支,以删除提交历史记录.然后我git rm --cached对所有文件进行了修改,修改.gitignore为忽略其中一些文件,然后添加并提交.正如所料,被忽略的文件不在新的repo中(也不在其任何历史记录中).但是,当我切换分支时它们会消失(也就是说,当我检查旧分支时,然后再次检查新分支).我怎么能避免这种情况?

编辑:整个操作的目的是准备一个项目在GitHub上发布,所以我想隐藏一些包含密码,密钥等私人信息的配置文件.这就是为什么我通过创建一个新的孤儿来删除提交历史科.我知道在添加文件之前提交文件可能.gitignore会解决消失的问题,但这会使文件最终在公共历史记录中可见.git add -f那时我试图这样做,git rm --cached但它没有做到这一点.

git

5
推荐指数
1
解决办法
1437
查看次数

多级继承C++

假设一个C类继承自B类,它覆盖了A中定义的虚函数.C不会覆盖该函数.当类型A*的指针指向类型C的对象时,函数调用是否会使用B中的重写版本?

c++ inheritance overriding virtual-functions

3
推荐指数
1
解决办法
326
查看次数

在R中展开具有未知维度的网格

对于给定的向量x,我需要获得该类型的数量

expand.grid(x,x,x,x)
Run Code Online (Sandbox Code Playgroud)

其中x重复d次.有没有允许这个的功能?就像是

expand.grids(x,d)
Run Code Online (Sandbox Code Playgroud)

谢谢!

r data-structures

1
推荐指数
1
解决办法
346
查看次数

转换异常将列表转换为数组

我想从列表开始构建一个数组数组,但是我得到了一个转换异常.谁知道为什么?这是代码

List<String[]> listofarray=new ArrayList<String[]>();
//...filling the list...
String[][] ob= (String[][]) listofarray.toArray();
Run Code Online (Sandbox Code Playgroud)

java string casting arraylist

0
推荐指数
1
解决办法
32
查看次数