Fre*_*lli 2 sdk android facebook
1)这个问题多次出现,而且awnser总是"你有错误的Key Hash".
2)Facebook文档告诉我们使用此代码来获取我们的Key Hash:
keytool -exportcert -alias MyKeyAlias -keystore path\to\my\Key | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
3)好的,这给了我钥匙:1yl**********Q3A
当我尝试登录时,我收到以下消息:com.facebook.http.protocol.ApiException:(#404)密钥哈希XHA**********q10与任何存储的密钥哈希都不匹配.
4)然后我将XHA**********q10复制并粘贴到我的应用程序设置上,这也不是我的密钥.
5)所以,我阅读的文档是一个代码,可以为您提供正确的Key Hash.这段代码:
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Run Code Online (Sandbox Code Playgroud)
有效!给我这个哈希:+ HA**********q0 =
6)我把最后一个哈希放在应用程序设置上,是,现在我可以连接!但是,现在我无法打开一个会话!
我正在使用以下代码:
public class FBActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_view);
System.out.println("Start Facebook login");
Session.openActiveSession(this, true, new Session.StatusCallback() {
public void call(Session session, SessionState state,
Exception exception) {
System.out.println("Call");
if (session.isOpened()) {
System.out.println("Open");
Request.newMeRequest(session, new Request.GraphUserCallback() {
public void onCompleted(GraphUser user, Response response) {
System.out.println("Complete");
if (user != null) {
System.out.println(user.getName());
} else {
System.out.println("User NULL");
}
}
}).executeAsync();
} else {
System.out.println("Not open");
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
日志是:
"开始Facebook登录
呼叫
没开
呼叫
没开"
我不知道我还能做什么,因为我已经有了正确的Key Hash,我可以登录.
我想到了:
缺少以下方法.刚添加它,一切正常.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2146 次 |
| 最近记录: |